﻿using System;
using System.IO;

namespace Rosetta
{
    public interface IOutputter : IAccepts
    {
        #region Properties

        TextWriter Log { get; set; }

        #endregion

        #region Methods

        [NotNull]
        Action<T> Put<T>([NotNull] string methodName);

        [NotNull]
        Action<T1, T2> Put<T1, T2>([NotNull] string methodName);

        [NotNull]
        Action<T1, T2, T3> Put<T1, T2, T3>([NotNull] string methodName);

        [NotNull]
        Action<T1, T2, T3, T4> Put<T1, T2, T3, T4>([NotNull] string methodName);

        #endregion
    }
}